package chat;

/**
 * Interface that encompasses all the commands the client can do, via chat or a separate interface
 * @author janmonterrubio
 *
 */
public interface Commands {
	/**
	 * Sends a private message to a certain user
	 * @param user the name of the user we're sending a message to
	 */
	public void sendPrivateMessage(String user);
	
	/**
	 * Used for quick access, replies to a user via private message
	 * @param user the user that just sent us a private message
	 */
	public void reMessage(String user);
	
	/**
	 * Sends cash or ore to another user
	 * @param cash amount of money we're sending in a string
	 * @param user the name of the person we're sending cash to
	 * We must always check for funds first, and if we have funds then we can send the message over the network
	 * else the message is discarded, and the user gets a message stating he has no funds.
	 */
	public void sendMoney(String cash, String user);
	
	/**
	 * Sends a tower (class not created) to a designated user
	 * @param tower the object tower we're sending through the net
	 * @param user the user that's going to receive our tower
	 */
	public void sendTower(Object tower, String user);
	
	/**
	 * Adds a vote to the user, users with a certain amount of votes get banned from the game
	 * @param user the user we're adding a vote to
	 */
	public void voteUser(String user);
	
	/**
	 * Gives all the towers and cash to another user, it should be used upon clicking the disconnect button
	 * @param allCash all the ore this player has
	 * @param allTower every tower in this user's possession
	 * @param user the user we're giving everything to, determined randomly by server
	 */
	public void sendAll(int allCash, Object allTower, String user);
	
	/**
	 * Mutes a specified user for this specific client
	 * @param user the user we no longer want to here
	 * Must be added to the client's personal mutelist
	 */
	public void muteUser(String user);
	
	/**
	 * Prints a list of all available users
	 */
	public void userList();
	
	/**
	 * Prints a list of all users in the client's mute list
	 */
	public void muteList();
	
	/**
	 * Brings out the scores display panel or hide the panel
	 */
	public void scores();
	
	/**
	 * Prints out the user's system time, or hide/show the timer 
	 */
	public void time();
	

}
